package com.liuyjy.es.wrapper;

import java.util.function.Consumer;

public class EsUpdateWrapper<T> extends EsBaseWrapper<T, String, EsUpdateWrapper<T>> {


    public EsUpdateWrapper() {
        this((T)null);
    }

    public EsUpdateWrapper(T entity) {
        super.setEntity(entity);
    }

    @Override
    protected EsUpdateWrapper<T> self() {
        return this;
    }

    @Override
    protected EsUpdateWrapper<T> and(Consumer<EsUpdateWrapper<T>> consumer) {
        EsUpdateWrapper<T> wrapper = new EsUpdateWrapper<>();
        consumer.accept(wrapper);
        boolQuery.must(wrapper.boolQuery);
        return self();
    }

    @Override
    protected EsUpdateWrapper<T> or(Consumer<EsUpdateWrapper<T>> consumer) {
        EsUpdateWrapper<T> wrapper = new EsUpdateWrapper<>();
        consumer.accept(wrapper);
        boolQuery.should(wrapper.boolQuery);
        return self();
    }

    // ========== 更新方法 ==========
    public EsUpdateWrapper<T> set(String field, Object value) {
        updateMap.put(columnToString(field), value);
        return self();
    }

    public EsUpdateWrapper<T> setSql(String script) {
        // 直接使用脚本更新
        updateMap.put("script", script);
        return self();
    }
}